sequencer (generator) IB/FB

Otázka od: Kalus Jozef Ing.

27. 9. 2002 14:32

nazdar,

potrebujem vytvorit v IB/FB sequencer pre id (myslim ze sa to tam nazyva
Generator), teda vytvorit ho viem ale akosi ho neviem priradit k danemu
fieldu, t.j. ked dam insert aby sa mi automaticky inkrementovalo id v db
(moze byt aj s medzerami v ciselnej rade   )

takze priklad:

tabulka:
CREATE TABLE "users" (
    "id" INTEGER NOT NULL, -- tu niekde mi to chyba  
    "login" VARCHAR(50) CHARACTER SET NONE NOT NULL,
    "password" VARCHAR(50) CHARACTER SET NONE NOT NULL,
);

generator:
CREATE GENERATOR "user_id";
SET GENERATOR "user_id" TO 0;

nuz a co teraz ????

skusam to v IBExperte, tam je moznost vo vlastnostiach pola priradit
generator, ale ignoruje mi to a nic nepriradi  ((

v Oracle sa musi zavoal generator rucne a potom sa vratena hodnota vklada do
id, ale tu by som privital keby sa to dalo stylom MS Access

help my

joka

Odpovedá: Ondrej Kelle

27. 9. 2002 14:18

> potrebujem vytvorit v IB/FB sequencer pre id (myslim ze sa to
> tam nazyva Generator), teda vytvorit ho viem ale akosi ho
> neviem priradit k danemu fieldu, t.j. ked dam insert aby sa mi
> automaticky inkrementovalo id v db (moze byt aj s medzerami
> v ciselnej rade   )
>
> takze priklad:
>
> tabulka:
> CREATE TABLE "users" (
> "id" INTEGER NOT NULL, -- tu niekde mi to chyba  
> "login" VARCHAR(50) CHARACTER SET NONE NOT NULL,
> "password" VARCHAR(50) CHARACTER SET NONE NOT NULL,
> );

Vytvor si trigger, ktorym zavolas funkciu GEN_ID (vygenerujes nove cislo) a
vysledok vlozis do zaznamu, napriklad takto:

CREATE GENERATOR GEN_USERS;

SET TERM !!;

CREATE TRIGGER NEW_USERS FOR USERS
BEFORE INSERT POSITION 0
AS
BEGIN
  IF ((NEW.ID IS NULL) OR (NEW.ID = 0)) THEN
    NEW.ID = GEN_ID(GEN_USERS, 1);
END!!

SET TERM ;!!

Je to popisane v dokumentacii k InterBase, napr. v Data Definition Guide.

HTH
TOndrej

Odpovedá: tomasand@quick.cz

27. 9. 2002 14:50

Ja to delam takto:

set term /;
create procedure mojeprocedure
returns (NEW_ID_K numeric(12,0))
as
begin
  new_id_k = GEN_ID(GEN_ID_KONTAKT, 1);
  EXIT;
end;/
set term ;/

Ve Tvem pripade bych to napsal do before insert
triggeru


Tomas Andrasko


----- Původní zpráva -----
Od: "Kalus Jozef Ing." <jozef.kalus@spordat.sk>
Datum: pátek, 27. září 2002 v 2:06 odp.
Předmět: sequencer (generator) IB/FB

> nazdar,
>
> potrebujem vytvorit v IB/FB sequencer pre id
> (myslim ze sa to tam nazyva
> Generator), teda vytvorit ho viem ale akosi
> ho neviem priradit k danemu
> fieldu, t.j. ked dam insert aby sa mi
> automaticky inkrementovalo id v db
> (moze byt aj s medzerami v ciselnej rade
>   )
>
> takze priklad:
>
> tabulka:
> CREATE TABLE "users" (
> "id" INTEGER NOT NULL, -- tu
> niekde mi to chyba  
> "login" VARCHAR(50) CHARACTER SET
> NONE NOT NULL,
> "password" VARCHAR(50) CHARACTER SET
> NONE NOT NULL,
> );
>
> generator:
> CREATE GENERATOR "user_id";
> SET GENERATOR "user_id" TO 0;
>
> nuz a co teraz ????
>
> skusam to v IBExperte, tam je moznost vo
> vlastnostiach pola priradit
> generator, ale ignoruje mi to a nic
> nepriradi  ((
>
> v Oracle sa musi zavoal generator rucne a
> potom sa vratena hodnota vklada do
> id, ale tu by som privital keby sa to dalo
> stylom MS Access
>
> help my
>
> joka
>